In computing, a “plug-in” is a software module that extends or customizes functionality of a software application that is external to the plug-in. A plug-in can thus, be used to satisfy the requirements of a specific deployment. A plug-in framework, such as an Open Service Gateway initiative (“OSGi”) framework, allows the software application to define plug-in points that are specific points in the software application where extensibility can be provided. An interface definition accompanies the plug-in point, and is generally identified as a “plug-in interface.” Users of the software application can extend the plug-in interface based on business requirements, and register the extensions of the plug-in interface with the plug-in framework as plug-ins.
In general, plug-in frameworks provide the ability to load plug-ins from various sources such as a file system or a database. Furthermore, certain plug-in frameworks also provide a way to register multiple versions of a plug-in, and set one of the versions as the version to be loaded. Thus, customers of the plug-in framework create multiple individualized plug-ins specific to one or more business requirements. This can result in a proliferation of plug-ins and an increased maintenance overhead.